/**
 * 
 */
package projeto.administrativo.servico.cdp;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.OrderBy;

import nucleo.comuns.util.UtilitarioSerializacao;

import plataforma.base.cdp.IObjetoAtivoInativo;
import plataforma.base.cdp.ObjetoPersistente;
import projeto.administrativo.atividade.cdp.KAtividade;
import projeto.administrativo.colaboradorexterno.cdp.Informacao;
import projeto.administrativo.fase.cdp.KFase;
import projeto.comercial.categoriaservico.cdp.CategoriaServico;

/**
 * @author mike
 *
 */
@Entity
public class KServico extends ObjetoPersistente implements IObjetoAtivoInativo {
	/**
	 * 
	 */
	private static final long serialVersionUID = UtilitarioSerializacao.getIDSerializacao();
	private boolean ativo;
	private String descricao;
	private CategoriaServico categoria;
	//private Set<KAtividade> kAtividades= new HashSet<KAtividade>();
	private List<OrdemKServicoKAtividade> ordens = new ArrayList<OrdemKServicoKAtividade>();
	
	private BigDecimal valorPadrao;
	
	
	
	public BigDecimal getValorPadrao() {
		return valorPadrao;
	}

	public void setValorPadrao(BigDecimal valorPadrao) {
		this.valorPadrao = valorPadrao;
	}

	/**
	 * Some com a tabela intermediaria
	 */
	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
	@OrderBy("numeroOrdem")
	@JoinColumn(name="kservico_id")
	public List<OrdemKServicoKAtividade> getOrdens() {
		return ordens;
	}

	/**
	 * @param listaOrdem the listaOrdem to list
	 */
	public void setOrdens(List<OrdemKServicoKAtividade> listaOrdem) {
		this.ordens = listaOrdem;
	}

	public KServico(){
		this.ativo = true;
	}

	/**
	 * @return the descricao
	 */
	@Column(unique=true, nullable=false)
	public String getDescricao() {
		return descricao;
	}

	/**
	 * @param descricao the descricao to set
	 */
	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}

	/**
	 * @return the categoria
	 */
	@ManyToOne(fetch=FetchType.LAZY)
	public CategoriaServico getCategoria() {
		return categoria;
	}

	/**
	 * @param categoria the categoria to set
	 */
	
	public void setCategoria(CategoriaServico categoria) {
		this.categoria = categoria;
	}

	@Override
	@Column(columnDefinition="boolean default false")
	public boolean isAtivo() {
		return this.ativo;
	}

	@Override
	public void setAtivo(boolean isAtivo) {
		this.ativo = isAtivo;
	}


	/**
	 * @return the kAtividades
	 */
	/*
	@ManyToMany(cascade = {CascadeType.MERGE,CascadeType.REFRESH,CascadeType.REMOVE}, fetch = FetchType.LAZY)
	@OrderBy(value="descricao")
	public Set<KAtividade> getkAtividades() {
		return kAtividades;
	}
	*/

	/**
	 * @param kAtividades the kAtividades to set
	 */
	/*
	public void setkAtividades(Set<KAtividade> kAtividades) {
		this.kAtividades = kAtividades;
	}
	*/

}
